package com.itehima.stream;

import java.util.ArrayList;
import java.util.Collections;
import java.util.function.Predicate;

public class Demo06 {
    //stream流的过滤方法
    public static void main(String[] args) {
/*
            filter              过滤
            limit               获取前几个元素
            skip                跳过前几个元素

            注意1：中间方法，返回新的Stream流，原来的Stream流只能使用一次，建议使用链式编程
            注意2：修改Stream流中的数据，不会影响原来集合或者数组中的数据
        */

        //一-filter
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"张无忌", "周芷若", "赵敏", "张强", "张三丰", "张翠山", "张良", "王二麻子", "谢广坤");

        //1/详细分析过滤filter
        list.stream().filter(new Predicate<String>() {
            @Override
            public boolean test(String s) {

                //规则：张开头的留下
                return s.startsWith("张");
                //如果返回值是false，表示当前的元素不符合规则，数据舍弃不要入流水线
                //如果返回值是true，表示当前的元素符合规则，数据留下入流水线
            }
            //将已经过滤的结果输出
        }).forEach(s-> System.out.println(s));

        //2.filter对于上面的详细写法--更简便的写法
        list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(s-> System.out.println(s));

        System.out.println("-----------------------------------");
        //二。limit
        list.stream().limit(3).forEach(s-> System.out.println(s));
        System.out.println("-----------------------------------");
        //三。skip
        list.stream().skip(4).forEach(s-> System.out.println(s));


        //课堂练习输出 ‘’张强", "张三丰", "张翠山"
        //list.stream().limit(6).skip(3).forEach(s -> System.out.println(s));



    }
}
